
package com.trial.area.goods.entity;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

/**
 * 商品实体类
 *
 * @author 朱国军
 * @version 2016年07月17日 朱国军
 */
public class GoodsVO {

    /** 商品ID */
    private String goodsId;

    /** 商品名称 */
    private String goodsName;

    /** 商品描述 */
    private String goodsDetail;

    /** 商品属性 */
    private String goodsProperties;

    /** 商品单价 */
    private BigDecimal goodsPrice;

    /** 商品运费 */
    private BigDecimal deliveryFee;

    /** 偏远地区加收邮费金额 */
    private BigDecimal exDeliveryFee;

    /** 需要加邮费的偏远地区，多个用,分隔 */
    private String remoteArea;
    
    /** 商品图文介绍 */
    private String goodsIntroduce;

    /** 商品大图 */
    private String goodsBigImg;

    /** 商品小图 */
    private String goodsSmallImg;

    /** 生产商 */
    private String goodsProducers;

    /** 商品状态：1，正常；2，已下架；3，已缺货 */
    private Integer goodsStatus;

    /** 商品上架时间 */
    private Date onSaleTime;

    /** 商品下架时间 */
    private Date offSaleTime;
    
    /** 购买数量 */
    private Integer buyNum;
    
    /** 虚构数量 */
    private Integer unrealNum;
    
    /** 商品类别 */
    private Integer goodsType;
    
    /** 商品类别名称 */
    private String goodsTypeName;

    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;

    /** 更新时间 */
    private Date updateTime;

    /** 创建时间 */
    private Date createTime;

    /** 创建人 */
    private String createUser;

    /**
     * 设置商品ID
     *
     * @param goodsId 商品ID
     */
    public void setGoodsId(String goodsId) {
        this.goodsId = goodsId;
    }

    /**
     * 获取商品ID
     *
     * @return 商品ID
     */
    public String getGoodsId() {
        return goodsId;
    }

    /**
     * 设置商品名称
     *
     * @param goodsName 商品名称
     */
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    /**
     * 获取商品名称
     *
     * @return 商品名称
     */
    public String getGoodsName() {
        return goodsName;
    }

    /**
     * 获取商品描述
     *
     * @return 商品描述
     */
    public String getGoodsDetail() {
        return goodsDetail;
    }

    /**
     * 设置商品描述
     *
     * @param goodsDetail 商品描述
     */
    public void setGoodsDetail(String goodsDetail) {
        this.goodsDetail = goodsDetail;
    }

    /**
     * 设置商品属性
     *
     * @param goodsProperties 商品属性
     */
    public void setGoodsProperties(String goodsProperties) {
        this.goodsProperties = goodsProperties;
    }

    /**
     * 获取商品属性
     *
     * @return 商品属性
     */
    public String getGoodsProperties() {
        return goodsProperties;
    }

    /**
     * 设置商品单价
     *
     * @param goodsPrice 商品单价
     */
    public void setGoodsPrice(BigDecimal goodsPrice) {
        this.goodsPrice = goodsPrice;
    }

    /**
     * 获取商品单价
     *
     * @return 商品单价
     */
    public BigDecimal getGoodsPrice() {
        return goodsPrice;
    }
    
    /**
     * 获取 偏远地区加收邮费金额
     *
     * @return 偏远地区加收邮费金额
     */
    public BigDecimal getExDeliveryFee() {
        return exDeliveryFee;
    }
    
    /**
     * 设置 偏远地区加收邮费金额
     *
     * @param exDeliveryFee 偏远地区加收邮费金额
     */
    public void setExDeliveryFee(BigDecimal exDeliveryFee) {
        this.exDeliveryFee = exDeliveryFee;
    }
    
    /**
     * 获取需要加邮费的偏远地区，多个用,分隔
     *
     * @return 需要加邮费的偏远地区，多个用,分隔
     */
    public String getRemoteArea() {
        return remoteArea;
    }
    
    /**
     * 设置需要加邮费的偏远地区，多个用,分隔
     *
     * @param remoteArea 需要加邮费的偏远地区，多个用,分隔
     */
    public void setRemoteArea(String remoteArea) {
        this.remoteArea = remoteArea;
    }
    
    /**
     * 获取商品状态：1，正常；2，已下架；3，已缺货
     *
     * @return 商品状态：1，正常；2，已下架；3，已缺货
     */
    public Integer getGoodsStatus() {
        return goodsStatus;
    }
    
    /**
     * 设置 商品状态：1，正常；2，已下架；3，已缺货
     *
     * @param goodsStatus 商品状态：1，正常；2，已下架；3，已缺货
     */
    public void setGoodsStatus(Integer goodsStatus) {
        this.goodsStatus = goodsStatus;
    }
    
    /**
     * 设置商品运费
     *
     * @param deliveryFee 商品运费
     */
    public void setDeliveryFee(BigDecimal deliveryFee) {
        this.deliveryFee = deliveryFee;
    }

    /**
     * 获取商品运费
     *
     * @return 商品运费
     */
    public BigDecimal getDeliveryFee() {
        return deliveryFee;
    }

    /**
     * 设置商品图文介绍
     *
     * @param goodsIntroduce 商品图文介绍
     */
    public void setGoodsIntroduce(String goodsIntroduce) {
        this.goodsIntroduce = goodsIntroduce;
    }

    /**
     * 获取商品图文介绍
     *
     * @return 商品图文介绍
     */
    public String getGoodsIntroduce() {
        return goodsIntroduce;
    }

    /**
     * 设置商品大图
     *
     * @param goodsBigImg 商品大图
     */
    public void setGoodsBigImg(String goodsBigImg) {
        this.goodsBigImg = goodsBigImg;
    }

    /**
     * 获取商品大图
     *
     * @return 商品大图
     */
    public String getGoodsBigImg() {
        return goodsBigImg;
    }

    /**
     * 设置商品小图
     *
     * @param goodsSmallImg 商品小图
     */
    public void setGoodsSmallImg(String goodsSmallImg) {
        this.goodsSmallImg = goodsSmallImg;
    }

    /**
     * 获取商品小图
     *
     * @return 商品小图
     */
    public String getGoodsSmallImg() {
        return goodsSmallImg;
    }

    /**
     * 设置生产商
     *
     * @param goodsProducers 生产商
     */
    public void setGoodsProducers(String goodsProducers) {
        this.goodsProducers = goodsProducers;
    }

    /**
     * 获取生产商
     *
     * @return 生产商
     */
    public String getGoodsProducers() {
        return goodsProducers;
    }

    /**
     * 设置商品上架时间
     *
     * @param onSaleTime 商品上架时间
     */
    public void setOnSaleTime(Date onSaleTime) {
        this.onSaleTime = onSaleTime;
    }

    /**
     * 获取商品上架时间
     *
     * @return 商品上架时间
     */
    public Date getOnSaleTime() {
        return onSaleTime;
    }

    /**
     * 设置商品下架时间
     *
     * @param offSaleTime 商品下架时间
     */
    public void setOffSaleTime(Date offSaleTime) {
        this.offSaleTime = offSaleTime;
    }

    /**
     * 获取商品下架时间
     *
     * @return 商品下架时间
     */
    public Date getOffSaleTime() {
        return offSaleTime;
    }
    
    /**
     * 获取购买数量
     *
     * @return 购买数量
     */
    public Integer getBuyNum() {
        return buyNum;
    }
    
    /**
     * 设置购买数量
     *
     * @param buyNum 购买数量
     */
    public void setBuyNum(Integer buyNum) {
        this.buyNum = buyNum;
    }
    
    /**
     * 获取虚构数量
     *
     * @return 虚构数量
     */
    public Integer getUnrealNum() {
        return unrealNum;
    }
    
    /**
     * 设置虚构数量
     *
     * @param unrealNum 虚构数量
     */
    public void setUnrealNum(Integer unrealNum) {
        this.unrealNum = unrealNum;
    }
    
    /**
     * 获取商品类别
     *
     * @return 商品类别
     */
    public Integer getGoodsType() {
        return goodsType;
    }

    /**
     * 设置商品类别
     *
     * @param goodsType 商品类别
     */
    public void setGoodsType(Integer goodsType) {
        this.goodsType = goodsType;
    }

    /**
     * 获取商品类别名称
     *
     * @return 商品类别名称
     */
    public String getGoodsTypeName() {
        return goodsTypeName;
    }

    /**
     * 设置商品类别名称
     *
     * @param goodsTypeName 商品类别名称
     */
    public void setGoodsTypeName(String goodsTypeName) {
        this.goodsTypeName = goodsTypeName;
    }

    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }

    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建人
     *
     * @param createUser 创建人
     */
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }

    /**
     * 获取创建人
     *
     * @return 创建人
     */
    public String getCreateUser() {
        return createUser;
    }

    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {
        if (StringUtils.isBlank(goodsName)) {
            return "商品名称不能为空";
        }
        
        if (goodsPrice == null) {
            return "商品单价不能为空";
        }
        if (deliveryFee == null) {
            return "商品运费不能为空";
        }
        
        if (StringUtils.isBlank(goodsIntroduce)) {
            return "商品图文介绍不能为空";
        }
        
        if (StringUtils.isBlank(goodsBigImg)) {
            return "商品大图不能为空";
        }
        
        if (StringUtils.isBlank(goodsSmallImg)) {
            return "商品小图不能为空";
        }
        
        if (StringUtils.isNotBlank(goodsName) && goodsName.length() > 200) {
            return "商品名称值超长，允许输入的最大长度为：200字符";
        }
        
        if (StringUtils.isNotBlank(goodsProperties) && goodsProperties.length() > 400) {
            return "商品属性值超长，允许输入的最大长度为：400字符";
        }
        
        if (StringUtils.isNotBlank(goodsProducers) && goodsProducers.length() > 200) {
            return "生产商值超长，允许输入的最大长度为：200字符";
        }
        
        return null;
    }
}
